/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package minimundo.comercio;

import java.util.ArrayList;
import java.util.List;
import minimundo.social.Pessoa;

/**
 *
 * @author Valdirene
 */
public class ContaBancaria {
    private List<Pessoa> proprietarios = new ArrayList<Pessoa>();
    private AgenciaBancaria agencia;
    private double credito;
    private double debito;
    private boolean contaCorrente;
    private boolean contaPoupanca;
    private String numero;
    private double saldo;

    /**
     * @return Retorna um lista com todos as pessoas que são proprietárias dessa conta
     */
    public List<Pessoa> getProprietarios() {
        return proprietarios;
    }

    /**
     * @param Adiciona um  pessoa na lista de proprietários da conta
     */
    public void setProprietarios(Pessoa proprietario) {
        if(!proprietarios.contains(proprietario))
        {
            proprietarios.add(proprietario);
        }
        else
        {
            System.out.println(proprietario.getNome() +" já é um dos proprietário desta conta.");
        }
    }

    /**
     *
     * @param Remove um proprietário da lista de proprietario de conta. Caso só tenha um proprietário isso não será possível.
     */
    public void removerProprietario(Pessoa proprietario)
    {
        if(proprietarios.contains(proprietario))
        {
            if(proprietarios.size() > 1)
                proprietarios.remove(proprietario);
            else
                System.out.println("Não é possível remover "+proprietario.getNome()+" da conta, pois é o unico proprietário. Você deletar a conta!");
        }
        else
        {
            System.out.println("Desculpe, mas "+proprietario.getNome()+" não é um dos proprietários desta conta.");
        }
    }

    /**
     * @return Retorna a agência em que essa conta foi criada
     */
    public AgenciaBancaria getAgencia() {
        return agencia;
    }

    /**
     * @param Define a agência em que essa conta foi criada
     */
    public void setAgencia(AgenciaBancaria agencia) {
        this.agencia = agencia;
    }

    /**
     * @return Retorna quanto a conta tem de crédito. Vale lembrar que crédito não é saldo.
     */
    public double getCredito() {
        return credito;
    }

    /**
     * @param Define quanto a conta tem de crédito
     */
    public void setCredito(double credito) {
        if(credito >= 0)
            this.credito = credito;
        else
            System.out.println("Você não pode definir um crédito negativo.");
    }

    /**
     * @return Retorna o débito da conta
     */
    public double getDebito() {
        return debito;
    }

    /**
     * @param Define o débito da conta
     */
    public void setDebito(double debito) {
        if(debito > 0)
            this.debito = debito;
        else
            System.out.println("Você não pode definir o débito positivo.");
    }

    /**
     * @return Retorna e a conta é conta corrente ou não
     */
    public boolean isContaCorrente() {
        return contaCorrente;
    }

    /**
     * @param Define se a conta é conta corrente ou não. Vale lembrar que ela pode ser poupança e corrente ao mesmo tempo.
     */
    public void setContaCorrente(boolean contaCorrente) {
        this.contaCorrente = contaCorrente;
    }

    /**
     * @return Retorna se a conta é poupança ou não.
     */
    public boolean isContaPoupanca() {
        return contaPoupanca;
    }

    /**
     * @param Define se a conta é poupança ou não. Vale lembrar que ela pode ser poupança e conta corrente ao mesmo tempo.
     */
    public void setContaPoupanca(boolean contaPoupanca) {
        this.contaPoupanca = contaPoupanca;
    }

    /**
     * @return Retorna o número da conta com digito incluso.
     */
    public String getNumero() {
        return numero;
    }

    /**
     * @param Define o numero da conta com digito incluso.
     */
    public void setNumero(String numero) {
        this.numero = numero;
    }

    /**
     * @return Retorna o saldo da conta
     */
    public double getSaldo() {
        return saldo;
    }

    /**
     * @param Define o saldo da conta
     */
    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }


}
